
最後に書いたのは、
Friday, 2002-11-15
counts.
書いていたらシェルがごちゃごちゃしてわかりずらいので、一般的な解説を気取って書いてみました。
目的:基本的なshellの構造と種類、solaris8における自動作成について書きます。
shellの構造:
shellは、キーボードから受け取った入力commandを解析して、UNIXカーネルに受け渡すコマンド型のインタープリンタです。概念図は、次のような構造をもっています。
コマンド画面から、何か、commandを入れると(たとえばcat /etc/hosts/)します。
キーボーから入ったデーターは、Shellで解釈されます。結果としてHDの/etc/hostsを読み出して、画面に書き出す処理を行います。
このように入れられた命令を、解釈して、カーネルに渡す働きをしています。

Solaris8は、そのような働きをする色々なShellを使うことができるようです。
また、adminitoolでユーザーを作成する場合、login shellを指定することができます。
sh,C,Komは、自動的に絶対パスが指定されます。
以外のその他で指定したshellの場合、場所は下記表を参考にして下さい。silaros8のadminitoolでユーザー登録をすると、shell環境が同時に設定されるものがありま
すが、そのときに/etc/skilから、それぞれの雛型が参照されます。その他、リファレンスなど細かいことは、それぞれのshellnameから行ってください。linkされてます。
shell name 場所
大きさusr環境ファイル 定義ファイルup法
特徴 Boume (sh) shell
B shell/usr/bin/sh
82kbytes
自動作成される。
$HOME/.profile. /.profile
もしくは
source /.profileAT&Tで開発されたBoumeさんにちなんでボーンシェルと言われている。
小さいfileサイズで実行速度が速いようだ。
対話的には不可、システム管理に使われているshellです。csh
C shell
/su/bin/csh
130kbytes
自動作成される。
$HOME/.cshrc
$HOME/.loginsource .login
source .cshrc
rehashカルフォルニア大学で開発された。C言語型のshell
初め、BSD系のUNIX用として導入されたようだ。
対話を特徴とした、login shellとしてSolarisでは、よく使われている。Kom (ksh) shell
K shell
/usr/bin/ksh
167kbytesできている。localを取る。
$HOME/local.profile
$HOME/local.cshrc
$HOME/local.login. .profile
もしくは
source .profile
Boume shellを包含する上位バージョンでヒストリ、エイリアスを拡張してあり、
C shellよりも多機能になっている。bash shell /usr/bin/bash
426kbytes
$HOME/.profile
雛型は有りません。作ります。
$HOME/.bashrc
$HOME/.bash_profile
$HOME/.bash_logout
. .bash_profile
もしくは
source .bash_profileGNUで開発されたBoume shellの拡張版、sh互換で、csh、kshの機能も取リ入れられている。フリーのUNIXのシステム管理に多用されている。
tcsh shell /usr/bin/tcsh
271kbytes.cshrcから作ります。
$HOME/.tcshrc
$HOME/.login
$HOME/.logout
source .login
source .tcshrc
rehashcshとの完全互換性を持っている。対話ログインshell、shellスクリプトコマンドが便利なので、フリーのUNIXのシステム管理に多用されている。 zsh shell /usr/bin/zsh
381kbytes作ります。
$HOME/.zshenv
$HOME/.zprofile
$home/.zshrc
$home/.zlogin
. .zshrc
もしくは
source .zshrc
source .zprofilekshとよく似たshell、ほかには、コマンドの訂正機能履歴などに優れているらしい。 ほかにも、.profileが使えるかもしれません。
environments variable 環境変数 (共通して使われいてる変数)
VS shell variable シェル変数 (開かれているshell内で独立した変数。)
各違ったshell間で環境変数がどのように扱われるかなどは非常に複雑になると思うので、とりあえず、ということで。 <-良くわからんのです。移る場合の状況やなにやらあるようで。大体同じ文字は同じに解釈されると思うのだが。わかったら書きます。
環境変数は、環境変数であると宣言をしたものが環境変数ですが、大体大文字で書かれいる変数だと思ってください。シェル変数は、特別な宣言をしません。(cshの場合は、set)ただの変数として取り扱うようです。シェル変数は小文字が多く使われます。どちらも変数を定義するものですが、環境変数は、一つのshellから派生した下位shellに対して同じ変数を そのまま使うことができるのに対して、シェル変数は、そのshell内でないと使用できない変数になっているのです。なんか、グローバル変数、とローカル変数みたいだな。特に、Cshellでは、それぞれの変数が独立しているそうです。だから分けて使うことも可能だそうです。
たとえば、下位シェルが複数開かれている場合は各シェルで使うシェル変数は同じでも違う値が持てることになるのであるということのようです。しかし、環境変数は、どっちも同じものになっている。こんなことかな。でも、使い分ければ便利がいい事が多いのら。
環境変数の中でも、初めから固定されているもの、固定されているが再定義可能なもの、環境に合わせて作るものなどいろいろ有るみたいですが、Shellによって違いが有るので個別のページを見てください。
例外: Cshell path = 環境変数 PATH : Cshell term = 環境変数 TREM etc.は、更新される。
Cshellのシェル変数が環境変数に移る場合があるようなので、設定後は確認することが前提であることが強く言われています。具体的に書こうとすると、それぞれのシェルによって違いが多くて、比較表か個別に書かないとなんか読んでるほうも意味がわからなくなるので後は、個別ページにします。
Last edit was Friday, 11/15/2002 <back> <up>